home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / dev / gcc / gcc263_doc.lha / gnu / man / man1 / cccp.1 < prev    next >
Text File  |  1994-12-19  |  23KB  |  463 lines

  1.  
  2.  
  3.  
  4. cpp(1)                      GNU Tools                      cpp(1)
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      cccp, cpp - The GNU C-Compatible Compiler Preprocessor.
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ccccccccccccpppp [----$$$$] [----AAAA_p_r_e_d_i_c_a_t_e[((((_v_a_l_u_e))))]] [----CCCC] [----DDDD_n_a_m_e[====_d_e_f_i_n_i_t_i_o_n]]
  13.           [----ddddDDDD] [----ddddMMMM] [----IIII _d_i_r_e_c_t_o_r_y] [----HHHH] [----IIII----] [----iiiimmmmaaaaccccrrrroooossss _f_i_l_e] [
  14.           ----iiiinnnncccclllluuuuddddeeee _f_i_l_e] [----iiiiddddiiiirrrraaaafffftttteeeerrrr _d_i_r] [----iiiipppprrrreeeeffffiiiixxxx _p_r_e_f_i_x] [----
  15.           iiiiwwwwiiiitttthhhhpppprrrreeeeffffiiiixxxx _d_i_r] [----llllaaaannnngggg----cccc] [----llllaaaannnngggg----cccc++++++++] [----llllaaaannnngggg----oooobbbbjjjjcccc] [----
  16.           llllaaaannnngggg----oooobbbbjjjjcccc++++++++] [----lllliiiinnnntttt] [----MMMM [----MMMMGGGG]] [----MMMMMMMM [----MMMMGGGG]] [----MMMMDDDD _f_i_l_e ]
  17.           [----MMMMMMMMDDDD _f_i_l_e ] [----nnnnoooossssttttddddiiiinnnncccc] [----nnnnoooossssttttddddiiiinnnncccc++++++++] [----PPPP] [----ppppeeeeddddaaaannnnttttiiiicccc]
  18.           [----ppppeeeeddddaaaannnnttttiiiicccc----eeeerrrrrrrroooorrrrssss] [----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll] [----ttttrrrriiiiggggrrrraaaapppphhhhssss] [----UUUU_n_a_m_e]
  19.           [----uuuunnnnddddeeeeffff] [----WWWWttttrrrriiiiggggrrrraaaapppphhhhssss] [----WWWWccccoooommmmmmmmeeeennnntttt] [----WWWWaaaallllllll] [----
  20.           WWWWttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll]
  21.           [_i_n_f_i_l_e|----] [_o_u_t_f_i_l_e|----]
  22.  
  23. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  24.      The C preprocessor is a _m_a_c_r_o _p_r_o_c_e_s_s_o_r  that  is  used  au-
  25.      tomatically  by the C compiler to transform your program be-
  26.      fore actual compilation.  It is called a macro processor be-
  27.      cause it allows you to define _m_a_c_r_o_s, which are brief abbre-
  28.      viations for longer constructs.
  29.  
  30.      The C preprocessor provides four  separate  facilities  that
  31.      you can use as you see fit:
  32.  
  33.      +o     Inclusion of header files.  These  are  files  of  de-
  34.           clarations that can be substituted into your program.
  35.  
  36.      +o     Macro expansion.  You can define _m_a_c_r_o_s, which are ab-
  37.           breviations for arbitrary fragments of C code, and then
  38.           the C preprocessor will replace the macros  with  their
  39.           definitions throughout the program.
  40.  
  41.      +o     Conditional compilation.  Using  special  preprocessor
  42.           commands,  you can include or exclude parts of the pro-
  43.           gram according to various conditions.
  44.  
  45.      +o     Line control.  If you use  a  program  to  combine  or
  46.           rearrange  source files into an intermediate file which
  47.           is then compiled, you can use line  control  to  inform
  48.           the  compiler of where each source line originally came
  49.           from.
  50.  
  51.      C preprocessors vary in some details.  For a  full  explana-
  52.      tion   of   the  GNU  C  preprocessor,  see  the  iiiinnnnffffoooo  file
  53.      `ccccpppppppp....iiiinnnnffffoooo', or the manual _T_h_e _C _P_r_e_p_r_o_c_e_s_s_o_r.  Both of these
  54.      are   built   from   the  same  documentation  source  file,
  55.      `ccccpppppppp....tttteeeexxxxiiiinnnnffffoooo'.  The GNU C preprocessor provides  a  superset
  56.      of the features of ANSI Standard C.
  57.  
  58.      ANSI Standard C requires the rejection of many harmless con-
  59.      structs  commonly used by today's C programs.  Such incompa-
  60.  
  61.  
  62.  
  63. GNU Tools            Last change: 30apr1993                     1
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. cpp(1)                      GNU Tools                      cpp(1)
  71.  
  72.  
  73.  
  74.      tibility would be inconvenient  for  users,  so  the  GNU  C
  75.      preprocessor is configured to accept these constructs by de-
  76.      fault.  Strictly speaking, to get ANSI Standard C, you  must
  77.      use  the options `----ttttrrrriiiiggggrrrraaaapppphhhhssss', `----uuuunnnnddddeeeeffff' and `----ppppeeeeddddaaaannnnttttiiiicccc', but
  78.      in practice the consequences of having strict ANSI  Standard
  79.      C make it undesirable to do this.
  80.  
  81.      Most often when you use the C preprocessor you will not have
  82.      to invoke it explicitly: the C compiler will do so automati-
  83.      cally.  However, the preprocessor is sometimes useful  indi-
  84.      vidually.
  85.  
  86.      When you call the  preprocessor  individually,  either  name
  87.      (ccccpppppppp or ccccccccccccpppp) will do-they are completely synonymous.
  88.  
  89.      The C preprocessor expects two file names as arguments,  _i_n_-
  90.      _f_i_l_e  and  _o_u_t_f_i_l_e.   The preprocessor reads _i_n_f_i_l_e together
  91.      with any other files it specifies with `####iiiinnnncccclllluuuuddddeeee'.  All  the
  92.      output  generated  by the combined input files is written in
  93.      _o_u_t_f_i_l_e.
  94.  
  95.      Either _i_n_f_i_l_e or _o_u_t_f_i_l_e may be `---- ', which as _i_n_f_i_l_e  means
  96.      to read from standard input and as _o_u_t_f_i_l_e means to write to
  97.      standard output.  Also, if _o_u_t_f_i_l_e or both  file  names  are
  98.      omitted, the standard output and standard input are used for
  99.      the omitted file names.
  100.  
  101. OOOOPPPPTTTTIIIIOOOONNNNSSSS
  102.      Here is a table of command options accepted by the C prepro-
  103.      cessor.  These  options can also be given when compiling a C
  104.      program; they are passed along automatically to the  prepro-
  105.      cessor when it is invoked by the compiler.
  106.  
  107.      ----PPPP    Inhibit generation of `####'-lines with  line-number  in-
  108.           formation  in  the  output from the preprocessor.  This
  109.           might be useful when running the preprocessor on  some-
  110.           thing  that is not C code and will be sent to a program
  111.           which might be confused by the `####'-lines.
  112.  
  113.      ----CCCC    Do not discard comments: pass them through to the out-
  114.           put  file.   Comments appearing in arguments of a macro
  115.           call will be copied to the output before the  expansion
  116.           of the macro call.
  117.  
  118.      ----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll
  119.           Try to imitate the behavior of old-fashioned C, as  op-
  120.           posed to ANSI C.
  121.  
  122.      ----ttttrrrriiiiggggrrrraaaapppphhhhssss
  123.           Process ANSI standard trigraph  sequences.   These  are
  124.           three-character sequences, all starting with `????????', that
  125.           are defined by ANSI C to stand for  single  characters.
  126.  
  127.  
  128.  
  129. GNU Tools            Last change: 30apr1993                     2
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. cpp(1)                      GNU Tools                      cpp(1)
  137.  
  138.  
  139.  
  140.           For  example,  `????????////'  stands  for `\\\\', so `''''????????////nnnn''''' is a
  141.           character constant for a newline.   Strictly  speaking,
  142.           the GNU C preprocessor does not support all programs in
  143.           ANSI Standard C unless `----ttttrrrriiiiggggrrrraaaapppphhhhssss' is used, but if you
  144.           ever notice the difference it will be with relief.
  145.  
  146.           You don't want to know any more about trigraphs.
  147.  
  148.      ----ppppeeeeddddaaaannnnttttiiiicccc
  149.           Issue warnings required by the ANSI C standard in  cer-
  150.           tain  cases such as when text other than a comment fol-
  151.           lows `####eeeellllsssseeee' or `####eeeennnnddddiiiiffff'.
  152.  
  153.      ----ppppeeeeddddaaaannnnttttiiiicccc----eeeerrrrrrrroooorrrrssss
  154.           Like `----ppppeeeeddddaaaannnnttttiiiicccc', except that errors are produced rath-
  155.           er than warnings.
  156.  
  157.      ----WWWWttttrrrriiiiggggrrrraaaapppphhhhssss
  158.           Warn if any trigraphs are  encountered  (assuming  they
  159.           are enabled).
  160.  
  161.      ----WWWWccccoooommmmmmmmeeeennnntttt
  162.  
  163.      ----WWWWccccoooommmmmmmmeeeennnnttttssss
  164.           Warn whenever a comment-start sequence `////****' appears  in
  165.           a comment.  (Both forms have the same effect).
  166.  
  167.      ----WWWWaaaallllllll
  168.           Requests both `----WWWWttttrrrriiiiggggrrrraaaapppphhhhssss' and `----WWWWccccoooommmmmmmmeeeennnntttt' (but not `----
  169.           WWWWttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll').
  170.  
  171.      ----WWWWttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll
  172.           Warn about certain constructs that  behave  differently
  173.           in traditional and ANSI C.
  174.  
  175.      ----IIII _d_i_r_e_c_t_o_r_y
  176.            Add the directory _d_i_r_e_c_t_o_r_y to the end of the list  of
  177.           directories  to be searched for header files.  This can
  178.           be used to override a system header file,  substituting
  179.           your  own version, since these directories are searched
  180.           before the system header file directories.  If you  use
  181.           more  than one `----IIII' option, the directories are scanned
  182.           in left-to-right order; the standard system directories
  183.           come after.
  184.  
  185.      ----IIII----    Any directories specified with `---- IIII'  options  before
  186.           the  ` ---- IIII ---- ' option are searched only for the case of
  187.           `####iiiinnnncccclllluuuuddddeeee _f_i_l_e"'; they are not searched  for  `####iiiinnnncccclllluuuuddddeeee
  188.           <<<<_f_i_l_e>'.
  189.  
  190.           If additional directories are specified with `---- IIII'  op-
  191.           tions  after the `----IIII---- ', these directories are searched
  192.  
  193.  
  194.  
  195. GNU Tools            Last change: 30apr1993                     3
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. cpp(1)                      GNU Tools                      cpp(1)
  203.  
  204.  
  205.  
  206.           for all `####iiiinnnncccclllluuuuddddeeee' directives.
  207.  
  208.           In addition, the `----IIII---- ' option inhibits the use of  the
  209.           current  directory  as  the  first search directory for
  210.           `####iiiinnnncccclllluuuuddddeeee _f_i_l_e"'.  Therefore, the current directory  is
  211.           searched only if it is requested explicitly with `----IIII....'.
  212.           Specifying both `----IIII---- ' and `----IIII....' allows you to  control
  213.           precisely  which  directories  are  searched before the
  214.           current one and which are searched after.
  215.  
  216.      ----nnnnoooossssttttddddiiiinnnncccc
  217.           Do not  search  the  standard  system  directories  for
  218.           header  files.  Only the directories you have specified
  219.           with `----IIII' options (and the current  directory,  if  ap-
  220.           propriate) are searched.
  221.  
  222.      ----nnnnoooossssttttddddiiiinnnncccc++++++++
  223.           Do not search for header  files  in  the  C++  specific
  224.           standard  directories,  but  do  still search the other
  225.           standard directories.  (This option is used when build-
  226.           ing libg++.)
  227.  
  228.      ----DDDD _n_a_m_e
  229.            Predefine _n_a_m_e as a macro, with definition `1111'.
  230.  
  231.      ----DDDD _n_a_m_e====_d_e_f_i_n_i_t_i_o_n
  232.            Predefine _n_a_m_e as a macro, with definition _d_e_f_i_n_i_t_i_o_n.
  233.           There  are  no  restrictions on the contents of _d_e_f_i_n_i_-
  234.           _t_i_o_n, but if you are invoking the preprocessor  from  a
  235.           shell  or  shell-like  program  you may need to use the
  236.           shell's quoting syntax to protect  characters  such  as
  237.           spaces that have a meaning in the shell syntax.  If you
  238.           use more than one `----DDDD' for the same _n_a_m_e, the rightmost
  239.           definition takes effect.
  240.  
  241.      ----UUUU _n_a_m_e
  242.            Do not predefine _n_a_m_e.  If both `----UUUU'  and  ` ---- DDDD'  are
  243.           specified for one name, the `----UUUU' beats the `----DDDD' and the
  244.           name is not predefined.
  245.  
  246.      ----uuuunnnnddddeeeeffff
  247.           Do not predefine any nonstandard macros.
  248.  
  249.      ----AAAA _n_a_m_e(vvvvaaaalllluuuueeee)
  250.           Assert (in the same way as  the  ####aaaasssssssseeeerrrrtttt  command)  the
  251.           predicate  _n_a_m_e  with tokenlist _v_a_l_u_e.  Remember to es-
  252.           cape or quote the parentheses on shell command lines.
  253.  
  254.           You can use `----AAAA----' to disable all predefined assertions;
  255.           it also undefines all predefined macros.
  256.  
  257.      ----ddddMMMM   Instead of outputting  the  result  of  preprocessing,
  258.  
  259.  
  260.  
  261. GNU Tools            Last change: 30apr1993                     4
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. cpp(1)                      GNU Tools                      cpp(1)
  269.  
  270.  
  271.  
  272.           output  a list of `####ddddeeeeffffiiiinnnneeee' commands for all the macros
  273.           defined during the execution of the  preprocessor,  in-
  274.           cluding  predefined  macros.   This  gives you a way of
  275.           finding out what is predefined in your version  of  the
  276.           preprocessor;  assuming  you  have no file `ffffoooooooo....hhhh', the
  277.           command
  278.  
  279.           touch foo.h; cpp -dM foo.h
  280.  
  281.           will show the values of any predefined macros.
  282.  
  283.      ----ddddDDDD   Like `----ddddMMMM' except in two respects: it does _n_o_t include
  284.           the  predefined  macros,  and it outputs _b_o_t_h the `####ddddeeee----
  285.           ffffiiiinnnneeee' commands and the result of  preprocessing.   Both
  286.           kinds of output go to the standard output file.
  287.  
  288.      ----MMMM [----MMMMGGGG]
  289.           Instead of outputting the result of preprocessing, out-
  290.           put  a  rule suitable for mmmmaaaakkkkeeee describing the dependen-
  291.           cies of the main source file.  The preprocessor outputs
  292.           one  mmmmaaaakkkkeeee rule containing the object file name for that
  293.           source file, a colon, and the names of all the included
  294.           files.   If there are many included files then the rule
  295.           is split into several lines using `\\\\'-newline.
  296.  
  297.           `----MMMMGGGG' says to treat missing header files  as  generated
  298.           files and assume they live in the same directory as the
  299.           source file.  It must be specified in addition to `----MMMM'.
  300.  
  301.           This  feature  is  used  in   automatic   updating   of
  302.           makefiles.
  303.  
  304.      ----MMMMMMMM [----MMMMGGGG]
  305.           Like `----MMMM' but mention  only  the  files  included  with
  306.           `####iiiinnnncccclllluuuuddddeeee  "_f_i_l_e"'.   System header files included with
  307.           `####iiiinnnncccclllluuuuddddeeee <_f_i_l_e>' are omitted.
  308.  
  309.      ----MMMMDDDD _f_i_l_e
  310.           Like `----MMMM' but the dependency information is written  to
  311.           `_f_i_l_e'.   This  is in addition to compiling the file as
  312.           specified-`----MMMMDDDD' does not inhibit  ordinary  compilation
  313.           the way `----MMMM' does.
  314.  
  315.           When invoking gcc, do not specify the `_f_i_l_e'  argument.
  316.           Gcc  will create file names made by replacing `....cccc' with
  317.           `....dddd' at the end of the input file names.
  318.  
  319.           In Mach, you can use the utility mmmmdddd to  merge  multiple
  320.           files  into a single dependency file suitable for using
  321.           with the `mmmmaaaakkkkeeee' command.
  322.  
  323.      ----MMMMMMMMDDDD _f_i_l_e
  324.  
  325.  
  326.  
  327. GNU Tools            Last change: 30apr1993                     5
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. cpp(1)                      GNU Tools                      cpp(1)
  335.  
  336.  
  337.  
  338.           Like `----MMMMDDDD' except mention only user header  files,  not
  339.           system header files.
  340.  
  341.      ----HHHH    Print the name of each header file used,  in  addition
  342.           to other normal activities.
  343.  
  344.      ----iiiimmmmaaaaccccrrrroooossss _f_i_l_e
  345.            Process _f_i_l_e as input, discarding the  resulting  out-
  346.           put, before processing the regular input file.  Because
  347.           the output generated from _f_i_l_e is discarded,  the  only
  348.           effect of `----iiiimmmmaaaaccccrrrroooossss _f_i_l_e' is to make the macros defined
  349.           in _f_i_l_e available for  use  in  the  main  input.   The
  350.           preprocessor evaluates any `----DDDD' and `----UUUU' options on the
  351.           command line before processing `----iiiimmmmaaaaccccrrrroooossss _f_i_l_e' .
  352.  
  353.      ----iiiinnnncccclllluuuuddddeeee _f_i_l_e
  354.           Process _f_i_l_e as input, and include  all  the  resulting
  355.           output, before processing the regular input file.
  356.  
  357.      ----iiiiddddiiiirrrraaaafffftttteeeerrrr _d_i_r
  358.            Add the directory _d_i_r to the second include path.  The
  359.           directories  on  the  second  include path are searched
  360.           when a header file is not found in any  of  the  direc-
  361.           tories in the main include path (the one that `----IIII' adds
  362.           to).
  363.  
  364.      ----iiiipppprrrreeeeffffiiiixxxx _p_r_e_f_i_x
  365.            Specify _p_r_e_f_i_x as the prefix for subsequent ` ---- iiiiwwwwiiiitttthhhh----
  366.           pppprrrreeeeffffiiiixxxx' options.
  367.  
  368.      ----iiiiwwwwiiiitttthhhhpppprrrreeeeffffiiiixxxx _d_i_r
  369.            Add a directory  to  the  second  include  path.   The
  370.           directory's  name  is  made by concatenating _p_r_e_f_i_x and
  371.           _d_i_r, where _p_r_e_f_i_x was specified previously with `----iiiipppprrrreeee----
  372.           ffffiiiixxxx'.
  373.  
  374.      ----llllaaaannnngggg----cccc
  375.  
  376.      ----llllaaaannnngggg----cccc++++++++
  377.  
  378.      ----llllaaaannnngggg----oooobbbbjjjjcccc
  379.  
  380.      ----llllaaaannnngggg----oooobbbbjjjjcccc++++++++
  381.           Specify the source language.  ` ---- llllaaaannnngggg----cccc++++++++'  makes  the
  382.           preprocessor  handle  C++  comment syntax, and includes
  383.           extra default include directories for C++, and `---- llllaaaannnngggg----
  384.           oooobbbbjjjjcccc'  enables the Objective C `####iiiimmmmppppoooorrrrtttt' directive.  `----
  385.           llllaaaannnngggg----cccc' explicitly turns off both of these  extensions,
  386.           and `----llllaaaannnngggg----oooobbbbjjjjcccc++++++++' enables both.
  387.  
  388.           These options are generated by the compiler driver ggggcccccccc,
  389.           but not passed from the `ggggcccccccc' command line.
  390.  
  391.  
  392.  
  393. GNU Tools            Last change: 30apr1993                     6
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. cpp(1)                      GNU Tools                      cpp(1)
  401.  
  402.  
  403.  
  404.      ----lllliiiinnnntttt
  405.           Look for commands to the program checker lllliiiinnnntttt  embedded
  406.           in  comments, and emit them preceded by `####pppprrrraaaaggggmmmmaaaa lllliiiinnnntttt'.
  407.           For example, the comment  `////****  NNNNOOOOTTTTRRRREEEEAAAACCCCHHHHEEEEDDDD  ****////'  becomes
  408.           `####pppprrrraaaaggggmmmmaaaa lllliiiinnnntttt NOTREACHED'.
  409.  
  410.           This option is available only when you call ccccpppppppp direct-
  411.           ly; ggggcccccccc will not pass it from its command line.
  412.  
  413.      ----$$$$    Forbid the use of `$$$$' in  identifiers.   This  is  re-
  414.           quired  for  ANSI  conformance.  ggggcccccccc automatically sup-
  415.           plies this option to the preprocessor if you specify `----
  416.           aaaannnnssssiiii', but ggggcccccccc doesn't recognize the `----$$$$' option itself
  417.           -to use it without the other effects of ` ---- aaaannnnssssiiii',  you
  418.           must call the preprocessor directly.
  419.  
  420. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  421.      `CCCCpppppppp' entry in iiiinnnnffffoooo; _T_h_e _C _P_r_e_p_r_o_c_e_s_s_o_r, Richard  M.  Stall-
  422.      man.
  423.      ggggcccccccc(1111); `GGGGcccccccc' entry in iiiinnnnffffoooo; _U_s_i_n_g _a_n_d _P_o_r_t_i_n_g _G_N_U  _C_C  (_f_o_r
  424.      _v_e_r_s_i_o_n _2._0), Richard M. Stallman.
  425.  
  426. CCCCOOOOPPPPYYYYIIIINNNNGGGG
  427.      Copyright (c) 1991, 1992,  1993  Free  Software  Foundation,
  428.      Inc.
  429.  
  430.      Permission is granted to make and distribute verbatim copies
  431.      of  this  manual provided the copyright notice and this per-
  432.      mission notice are preserved on all copies.
  433.  
  434.      Permission is granted to copy and distribute  modified  ver-
  435.      sions of this manual under the conditions for verbatim copy-
  436.      ing, provided that the entire resulting derived work is dis-
  437.      tributed under the terms of a permission notice identical to
  438.      this one.
  439.  
  440.      Permission is granted to copy and distribute translations of
  441.      this  manual  into  another language, under the above condi-
  442.      tions for modified versions, except that this permission no-
  443.      tice  may  be  included in translations approved by the Free
  444.      Software Foundation instead of in the original English.
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459. GNU Tools            Last change: 30apr1993                     7
  460.  
  461.  
  462.  
  463.